/*
 *
 */

package com.sun.dtv.ui;
/**
 * This interface represents any type of non-interactive component in the system
 * and provides them with a pluggable look and feel.
 * @author Rafael da Silva Almeida --- www.rafaelalmeida.net
 */
public interface ViewOnlyComponent extends MatteEnabled {

    /**
     * Constant to be used with the setHorizontalAlignment method of
     * ViewOnlyComponent.
     */
    static final int HORIZONTAL_ALIGN_LEFT =0 ;

    /**
     * Constant to be used with the setHorizontalAlignment method of
     * ViewOnlyComponent.
     */
    static final int HORIZONTAL_ALIGN_CENTER = 1;

    /**
     * Constant to be used with the setHorizontalAlignment method of
     * ViewOnlyComponent.
     */
    static final int HORIZONTAL_ALIGN_RIGHT = 2;

    /**
     * Constant to be used with the setHorizontalAlignment method of
     * ViewOnlyComponent.
     */
    static final int HORIZONTAL_ALIGN_JUSTIFIED = 3;

    /**
     * Constant to be used with the setVerticalAlignment method of
     * ViewOnlyComponent.
     */
    static final int VERTICAL_ALIGN_TOP = 4;

    /**
     * Constant to be used with the setVerticalAlignment method of
     * ViewOnlyComponent.
     */
    static final int VERTICAL_ALIGN_CENTER = 5;

    /**
     * Constant to be used with the setVerticalAlignment method of
     * ViewOnlyComponent.
     */
    static final int VERTICAL_ALIGN_BOTTOM = 6;

    /**
     * Constant to be used with the setVerticalAlignment method of
     * ViewOnlyComponent.
     */
    static final int VERTICAL_ALIGN_JUSTIFIED = 7;

    /**
     * Constant to be used with the setScalingMode method of ViewOnlyComponent.
     */
    static final int SCALE_NO = 8;

    /**
     * Constant to be used with the setHorizontalAlignment method of
     * ViewOnlyComponent.
     */
    static final int SCALE_ASPECT_PROOF = 9;

    /**
     * Constant to be used with the setScalingMode method of ViewOnlyComponent.
     */
    static final int SCALE_NO_ASPECT_PROOF = 10;

    /**
     *
     * @param state
     * @return - Returns the animated content for this component, depending on
     * the current state.
     */
    com.sun.dtv.lwuit.Image[] getAnimateContent(int state);

    /**
     *
     * @param state
     * @return - Returns the animated content for this component, depending on
     * the current state.
     */
    com.sun.dtv.lwuit.Image[] getGraphicContent(int state);

    /**
     *
     * @return - Retrieve the horizontal alignment for any state-based content
     * in this component.
     */
    int getHorizontalAlignment();

    /**
     *
     * @return - Return the current interaction state of the component.
     */
    int getInteractionState();

    /**
     *
     * @return - Retrieve the scaling mode for this component.
     */
    int getScalingMode();

    /**
     *
     * @param state
     * @return - Returns the text content for this component, depending on the
     * current state.
     */
    String getTextContent(int state);

    /**
     *
     * @return - Returns the text content for this component, depending on the
     * current state.
     */
    com.sun.dtv.ui.TextLayoutManager getTextLayoutManager();

    /**
     *
     * @return - Gets the text layout manager that is currently in use for text
     * layout in this component.
     */
    int getVerticalAlignment();

    /**
     *
     * @return - Returns true if double buffering is available and activated.
     */
    boolean isDoubleBuffered();

    /**
     *
     * @return - Returns true if the whole area of the Component (as returned by
     * the com.sun.dtv.lwuit.Component#getBounds method, is opaque.
     */
    boolean isOpaque();

    /**
     * Gets the text layout manager that is currently in use for text layout in
     * this component.
     * @param g -
     */
    void paint(com.sun.dtv.lwuit.Graphics g);

    /**
     * Handle the specified AWTEvent.
     * @param event
     */
    void processEvent(java.awt.AWTEvent event);

    /**
     * Assigns an array of graphical content to be used for animation to this
     * component which is state-dependent.
     * @param images
     * @param state
     */
    void setAnimateContent(com.sun.dtv.lwuit.Image[] images, int state);

    /**
     * Assigns an array of graphical content to be used for animation to this
     * component which is state-dependent.
     * @param image
     * @param state
     */
    void setGraphicContent(com.sun.dtv.lwuit.Image image, int state);

    /**
     * Set the horizontal alignment for any state-based content in this
     * component.
     * @param alignment
     */
    void setHorizontalAlignment(int alignment);

    /**
     * Set the horizontal alignment for any state-based content in this
     * component.
     * @param state
     */
    void setInteractionState(int state);

    /**
     *  Set the current state of the component with respect to interaction.
     * @param scaling
     */
    void setScalingMode(int scaling);

    /**
     * Assigns text content to this component which is state-dependent.
     * @param text
     * @param state
     */
    void setTextContent(String text, int state);

    /**
     * Assigns text content to this component which is state-dependent.
     * @param manager
     */
    void setTextLayoutManager(com.sun.dtv.ui.TextLayoutManager manager);

    /**
     * Set the vertical alignment for any state-based content in this component.
     * @param alignment
     */
    void setVerticalAlignment(int alignment);
}
